package cc1_XML_read;

import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class LeeOrdenPedidoCl {
	
//	static final String ARCHIVO = "OrdenPedidoCl.xml";
	
	static XMLOrdenPedidoCl leerOrdenCliente(String ARCHIVO){
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder;
		Document doc;
		try {
			builder = factory.newDocumentBuilder();
			doc = builder.parse(ARCHIVO);
			
			XMLOrdenPedidoCl orden = new XMLOrdenPedidoCl();
			
			Element rootOrden = doc.getDocumentElement();
			String numero = rootOrden.getAttribute("numero");
			orden.setNumero(Integer.parseInt(numero));
			
			String fecha =  rootOrden.getElementsByTagName("Emision").item(0).getTextContent();
			orden.setFecha(fecha);
						
			NodeList nodos = rootOrden.getElementsByTagName("Cliente");
			Element nodoCliente = (Element)nodos.item(0);
			
			String cuil = nodoCliente.getElementsByTagName("Cuil").item(0).getTextContent();
			orden.setCuilCliente(cuil);
			
			String razon = nodoCliente.getElementsByTagName("RazonSocial").item(0).getTextContent();
			orden.setRazonSocial(razon);
			
			//Referencia
			nodos = rootOrden.getElementsByTagName("Referencia");
			Element nodoReferencia = (Element) nodos.item(0);
					
			//Cotizacion
			nodos = nodoReferencia.getElementsByTagName("Referencia");
			
			for(int i=0; i<nodos.getLength(); i++){//por cada Cotizacion
				
				Element nodoCot = (Element) nodos.item(i);
				
				int numeroCot = Integer.parseInt(nodoCot.getElementsByTagName("Numero").item(0).getTextContent());
				orden.setNumeroCot(numeroCot);
				
				String fechaCot = nodoCot.getElementsByTagName("Fecha").item(0).getTextContent();
				orden.setFechaCot(fechaCot);
				
				//Condiciones de Venta
				NodeList nodos1 = nodoCot.getElementsByTagName("CondicionDeVenta");
				Element nodoCondVenta = (Element) nodos1.item(0);
				
				//Pago Contado
				NodeList nodos2 = nodoCondVenta.getElementsByTagName("PagoContado");
				Element nodoPagoCont = (Element) nodos2.item(0);
				
				int descuento = Integer.parseInt(nodoPagoCont.getElementsByTagName("Descuento").item(0).getTextContent());
				orden.setDescuento(descuento);
				
				//Financiacion
				NodeList nodos3 = nodoCondVenta.getElementsByTagName("Financiacion");
				Element nodoFinanciacion = (Element) nodos3.item(0);
				
				int cantDias = Integer.parseInt(nodoFinanciacion.getElementsByTagName("CantidadDias").item(0).getTextContent());
				orden.setCantDias(cantDias);
				
				int recargo = Integer.parseInt(nodoFinanciacion.getElementsByTagName("Recargo").item(0).getTextContent());
				orden.setRecargo(recargo);
				
				//Rodamientos
				List itemorden = new ArrayList();
				Element nodoRodamientos= (Element) nodoCot.getElementsByTagName("Rodamientos").item(0);
				NodeList nodosItems= nodoRodamientos.getElementsByTagName("Item");
				for(int j=0; j<nodosItems.getLength(); j++){//por cada Item del orden
					Element prmItem = (Element)nodosItems.item(j);
					String serie= prmItem.getAttribute("serie");
					itemorden.add(serie);
										
					String sufijo= prmItem.getAttribute("sufijo");
					itemorden.add(sufijo);
										
					String marca= prmItem.getElementsByTagName("Marca").item(0).getTextContent();
					itemorden.add(marca);
					
					String origen= prmItem.getElementsByTagName("Origen").item(0).getTextContent();
					itemorden.add(origen);
										
					int cantidad= (Integer.parseInt(prmItem.getElementsByTagName("Cantidad").item(0).getTextContent()));
					itemorden.add(cantidad);
					
					orden.setItemOrden(itemorden);
					
					return orden;
				}
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
}
